home *** CD-ROM | disk | FTP | other *** search
/ C/C++ Users Group Library 1996 July / C-C++ Users Group Library July 1996.iso / vol_400 / 414_02 / private / _memmove.c < prev    next >
Encoding:
C/C++ Source or Header  |  1993-06-17  |  1.1 KB  |  46 lines

  1. #ifdef PDCDEBUG
  2. char *rcsid__memmove = "$Header: C:\CURSES\private\RCS\_memmove.c 2.1 1993/06/18 20:22:29 MH Rel MH $";
  3. #endif
  4. #include <stdlib.h>
  5. #include <string.h>
  6. #include <ctype.h>
  7.  
  8. /*man-start*********************************************************************
  9.  
  10.   PDC_memmove()    - Replacement memmove() for lacking compliers.
  11.  
  12.   PDCurses Description:
  13.      This is a private PDCurses routine.
  14.  
  15.      Move a portion of memory taking consideration of overlapping memory
  16.      areas.
  17.  
  18.   PDCurses Return Value:
  19.      This function returns NULL if no temporary memory could be allocated.
  20.  
  21.   Portability:
  22.      PDCurses    int PDC_memmove(void *s1,const void *s2,size_t n);
  23.  
  24. **man-end**********************************************************************/
  25.  
  26.  
  27. void *PDC_memmove (void *s1, const void *s2, size_t n)
  28. {
  29.   char *dd;
  30.   const char *ss;
  31.  
  32.   dd = (char *)s1;
  33.   ss = (const char *)s2;
  34.   if (dd > ss && dd < ss + n)
  35.     {
  36.       dd += n;
  37.       ss += n;
  38.       while (n--)
  39.         *--dd = *--ss;
  40.     }
  41.   else
  42.     while (n--)
  43.       *dd++ = *ss++;
  44.   return s1;
  45. }
  46.